package com.entmanage.base.hrm.domain;

import java.util.List;
import java.util.Date;

import com.entmanage.common.annotation.Excel;
import com.entmanage.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 员工基本信息主对象 hrm_employee
 *
 * @author lsq
 * @date 2025-07-24
 */
@ApiModel(value = "HrmEmployee", description = "员工基本信息主对象")
public class HrmEmployee extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 员工ID */
    @ApiModelProperty(value = "员工ID")
    private Long empId;

    /** 用户ID */
    @Excel(name = "用户ID")
    @ApiModelProperty(value = "用户ID")
    private Long userId;

    /** 部门ID */
    @Excel(name = "部门ID")
    @ApiModelProperty(value = "部门ID")
    private Long deptId;

    /** 员工编号 */
    @Excel(name = "员工编号")
    @ApiModelProperty(value = "员工编号")
    private String empNo;

    /** 员工姓名 */
    @Excel(name = "员工姓名")
    @ApiModelProperty(value = "员工姓名")
    private String empName;

    /** 性别(0男 1女 2未知) */
    @Excel(name = "性别(0男 1女 2未知)")
    @ApiModelProperty(value = "性别(0男 1女 2未知)")
    private String gender;

    /** 身份证号 */
    @Excel(name = "身份证号")
    @ApiModelProperty(value = "身份证号")
    private String idCard;

    /** 出生日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "出生日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "出生日期")
    private Date birthDate;

    /** 农历生日 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "农历生日", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "农历生日")
    private Date lunarBirthday;

    /** 生日是否过新历（0农历 1新历） */
    @Excel(name = "生日是否过新历", readConverterExp = "0=农历,1=新历")
    @ApiModelProperty(value = "生日是否过新历（0农历 1新历）")
    private String isSolarBirthday;

    /** 手机号码 */
    @Excel(name = "手机号码")
    @ApiModelProperty(value = "手机号码")
    private String mobile;

    /** 邮箱 */
    @Excel(name = "邮箱")
    @ApiModelProperty(value = "邮箱")
    private String email;

    /** 岗位ID */
    @Excel(name = "岗位ID")
    @ApiModelProperty(value = "岗位ID")
    private Long postId;

    /** 员工类型 */
    @Excel(name = "员工类型")
    @ApiModelProperty(value = "员工类型")
    private String empType;

    /** 入职日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "入职日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "入职日期")
    private Date entryDate;

    /** 试用期开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "试用期开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "试用期开始时间")
    private Date probationStart;

    /** 试用期结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "试用期结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "试用期结束时间")
    private Date probationEnd;

    /** 实习开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "实习开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "实习开始时间")
    private Date internshipStart;

    /** 实习结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "实习结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "实习结束时间")
    private Date internshipEnd;

    /** 状态(0在职 1离职) */
    @Excel(name = "状态(0在职 1离职)")
    @ApiModelProperty(value = "状态(0在职 1离职)")
    private String status;

    /** 籍贯 */
    @Excel(name = "籍贯")
    @ApiModelProperty(value = "籍贯")
    private String nativePlace;

    /** 头像图片路径或URL */
    @Excel(name = "头像图片路径或URL")
    @ApiModelProperty(value = "头像图片路径或URL")
    private String avatar;

    /** 删除逻辑标识 */
    @ApiModelProperty(value = "删除逻辑标识")
    private String delFlag;

    /** 员工工作经历子信息 */
    @ApiModelProperty(value = "员工工作经历子信息")
    private List<HrmEmployeeExperience> hrmEmployeeExperienceList;

    /** 员工教育背景子信息 */
    @ApiModelProperty(value = "员工教育背景子信息")
    private List<HrmEmployeeEducation> hrmEmployeeEducationList;

    /** 员工工作证书子信息 */
    @ApiModelProperty(value = "员工工作证书子信息")
    private List<HrmEmployeeCertificate> hrmEmployeeCertificateList;


    public void setEmpId(Long empId)
    {
        this.empId = empId;
    }

    public Long getEmpId()
    {
        return empId;
    }
    public void setUserId(Long userId)
    {
        this.userId = userId;
    }

    public Long getUserId()
    {
        return userId;
    }
    public void setDeptId(Long deptId)
    {
        this.deptId = deptId;
    }

    public Long getDeptId()
    {
        return deptId;
    }
    public void setEmpNo(String empNo)
    {
        this.empNo = empNo;
    }

    public String getEmpNo()
    {
        return empNo;
    }
    public void setEmpName(String empName)
    {
        this.empName = empName;
    }

    public String getEmpName()
    {
        return empName;
    }
    public void setGender(String gender)
    {
        this.gender = gender;
    }

    public String getGender()
    {
        return gender;
    }
    public void setIdCard(String idCard)
    {
        this.idCard = idCard;
    }

    public String getIdCard()
    {
        return idCard;
    }
    public void setBirthDate(Date birthDate)
    {
        this.birthDate = birthDate;
    }

    public Date getBirthDate()
    {
        return birthDate;
    }
    public void setLunarBirthday(Date lunarBirthday)
    {
        this.lunarBirthday = lunarBirthday;
    }

    public Date getLunarBirthday()
    {
        return lunarBirthday;
    }
    public void setIsSolarBirthday(String isSolarBirthday)
    {
        this.isSolarBirthday = isSolarBirthday;
    }

    public String getIsSolarBirthday()
    {
        return isSolarBirthday;
    }
    public void setMobile(String mobile)
    {
        this.mobile = mobile;
    }

    public String getMobile()
    {
        return mobile;
    }
    public void setEmail(String email)
    {
        this.email = email;
    }

    public String getEmail()
    {
        return email;
    }
    public void setPostId(Long postId)
    {
        this.postId = postId;
    }

    public Long getPostId()
    {
        return postId;
    }

    public void setEmpType(String empType)
    {
        this.empType = empType;
    }

    public String getEmpType()
    {
        return empType;
    }

    public void setEntryDate(Date entryDate)
    {
        this.entryDate = entryDate;
    }

    public Date getEntryDate()
    {
        return entryDate;
    }
    public void setProbationStart(Date probationStart)
    {
        this.probationStart = probationStart;
    }

    public Date getProbationStart()
    {
        return probationStart;
    }
    public void setProbationEnd(Date probationEnd)
    {
        this.probationEnd = probationEnd;
    }

    public Date getProbationEnd()
    {
        return probationEnd;
    }

    public void setInternshipStart(Date internshipStart)
    {
        this.internshipStart = internshipStart;
    }

    public Date getInternshipStart()
    {
        return internshipStart;
    }
    public void setInternshipEnd(Date internshipEnd)
    {
        this.internshipEnd = internshipEnd;
    }

    public Date getInternshipEnd()
    {
        return internshipEnd;
    }

    public void setStatus(String status)
    {
        this.status = status;
    }

    public String getStatus()
    {
        return status;
    }
    public void setNativePlace(String nativePlace)
    {
        this.nativePlace = nativePlace;
    }

    public String getNativePlace()
    {
        return nativePlace;
    }
    public void setAvatar(String avatar)
    {
        this.avatar = avatar;
    }

    public String getAvatar()
    {
        return avatar;
    }
    public void setDelFlag(String delFlag)
    {
        this.delFlag = delFlag;
    }

    public String getDelFlag()
    {
        return delFlag;
    }

    public List<HrmEmployeeExperience> getHrmEmployeeExperienceList()
    {
        return hrmEmployeeExperienceList;
    }

    public List<HrmEmployeeCertificate> getHrmEmployeeCertificateList()
    {
        return hrmEmployeeCertificateList;
    }

    public List<HrmEmployeeEducation> getHrmEmployeeEducationList()
    {
        return hrmEmployeeEducationList;
    }

    public void setHrmEmployeeExperienceList(List<HrmEmployeeExperience> hrmEmployeeExperienceList)
    {
        this.hrmEmployeeExperienceList = hrmEmployeeExperienceList;
    }
    public void setHrmEmployeeEducationList(List<HrmEmployeeEducation> hrmEmployeeEducationList)
    {
        this.hrmEmployeeEducationList = hrmEmployeeEducationList;
    }
    public void setHrmEmployeeCertificateList(List<HrmEmployeeCertificate> hrmEmployeeCertificateList)
    {
        this.hrmEmployeeCertificateList = hrmEmployeeCertificateList;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("empId", getEmpId())
                .append("userId", getUserId())
                .append("deptId", getDeptId())
                .append("empNo", getEmpNo())
                .append("empName", getEmpName())
                .append("gender", getGender())
                .append("idCard", getIdCard())
                .append("birthDate", getBirthDate())
                .append("lunarBirthday", getLunarBirthday())
                .append("isSolarBirthday", getIsSolarBirthday())
                .append("mobile", getMobile())
                .append("email", getEmail())
                .append("postId", getPostId())
                .append("empType", getEmpType())
                .append("entryDate", getEntryDate())
                .append("probationStart", getProbationStart())
                .append("probationEnd", getProbationEnd())
                .append("internshipStart", getInternshipStart())
                .append("internshipEnd", getInternshipEnd())
                .append("status", getStatus())
                .append("createTime", getCreateTime())
                .append("updateTime", getUpdateTime())
                .append("remark", getRemark())
                .append("nativePlace", getNativePlace())
                .append("updateBy", getUpdateBy())
                .append("avatar", getAvatar())
                .append("delFlag", getDelFlag())
                .append("hrmEmployeeExperienceList", getHrmEmployeeExperienceList())
                .append("hrmEmployeeEducationList", getHrmEmployeeEducationList())
                .append("hrmEmployeeCertificateList", getHrmEmployeeCertificateList())
                .toString();
    }


}
